package model

import (
	"gorm.io/gorm"
	"smart-health-platforms/config"
	"time"
)

// 用户表
type Users struct {
	Id            uint           `gorm:"column:id;type:bigint UNSIGNED;comment:用户id;primaryKey;not null;" json:"id"`                               // 用户id
	NickName      string         `gorm:"column:nick_name;type:varchar(50);comment:昵称;not null;" json:"nick_name"`                                  // 昵称
	ImageCur      string         `gorm:"column:image_cur;type:varchar(255);comment:用户头像;not null;" json:"image_cur"`                               // 用户头像
	Gender        uint           `gorm:"column:gender;type:tinyint UNSIGNED;comment:用户性别:1男 2女;not null;" json:"gender"`                           // 用户性别:1男 2女
	Age           uint           `gorm:"column:age;type:int UNSIGNED;comment:年龄;not null;" json:"age"`                                             // 年龄
	Email         string         `gorm:"column:email;type:varchar(50);comment:邮箱;not null;" json:"email"`                                          // 邮箱
	Mobile        string         `gorm:"column:mobile;type:char(11);comment:手机号;not null;" json:"mobile"`                                          // 手机号
	Password      string         `gorm:"column:password;type:char(32);comment:密码;not null;" json:"password"`                                       // 密码
	PermissionsId uint           `gorm:"column:permissions_id;type:int UNSIGNED;comment:权限id：1用户 2医生;not null;" json:"permissions_id"`             // 权限id：1用户 2医生
	UsersStatus   uint           `gorm:"column:users_status;type:int UNSIGNED;comment:用户账号状态：1：正常 2：已冻结;not null;" json:"users_status"`            // 用户账号状态：1：正常 2：已冻结
	CreateAt      time.Time      `gorm:"column:create_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"create_at"`   // 创建时间
	UpdatedAt     time.Time      `gorm:"column:updated_at;type:datetime(3);comment:修改时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 修改时间
	DeletedAt     gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}

func (u *Users) TableName() string {
	return "users"
}

// 用户注册
func (u *Users) Create() error {
	return config.DB.Create(&u).Error
}

// 查找用户手机号
func (u *Users) GetUserInfoByMobile(mobile string) error {
	return config.DB.Where("mobile = ?", mobile).Limit(1).Find(&u).Error
}

// 查找用户id
func (u *Users) GetUserInfoById(id int) error {
	return config.DB.Where("id = ?", id).Limit(1).Find(&u).Error
}

// 用户详情
func (u *Users) GetUserDetail(mobile string) error {
	return config.DB.Where("mobile = ?", mobile).Find(&u).Error
}

// 用户资料修改
func (u *Users) UserUpdate(id int) error {
	return config.DB.Model(&u).Where("id = ?", id).Updates(&u).Error
}

// 忘记密码
func (u *Users) ForgetPassword(id int) error {
	return config.DB.Model(&u).Where("id = ?", id).Updates(&u).Error
}

// 注销账号
func (u *Users) DeleteUser(id int) error {
	return config.DB.Model(&u).Where("id = ?", id).Delete(&u).Error
}
